/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.editor.contador;

import br.com.gui.Editor;
import java.util.*;

 
public class Contador {
    public Editor ed;
    
    public Contador(Editor ed){
        this.ed = ed;
    }
    
    public Contador(){
        
    }
    
    private String texto;
    private char arrayTexto;
    String dado;
    public String[] tokens;

    public int contaPalavras(String texto) {

        if ("".equals(texto)) {
            return 0;
        }
        
        this.texto = texto.replaceAll("\\W", " ").replaceAll(" +", " ").trim();

        tokens = this.texto.split(" ");
        return tokens.length;

    }

    public int contarFrases(String texto) {

        if ("".equals(texto)) {
            return 0;
        }
        
        this.texto = texto.replaceAll("(.)\\1+", ".")
                       .replaceAll("(,)\\1+", ",")
                       .replaceAll("(!)\\1+", " ")
                       .replaceAll("(?)\\1+", " ")
                       .trim();
        
        String[] tokens1 = {};
        String[] tokens2 = {};
        String[] tokens3 = {};
        String[] tokens4 = {};
        
        for (int i = 0; i < this.texto.length(); i++) {
            this.arrayTexto = this.texto.charAt(i);
            
            if (arrayTexto == ',') {
                tokens1 = this.texto.split(", ");
            }
            if (arrayTexto == '.') {
                tokens2 = this.texto.split(".");
            }
            if (arrayTexto == '!') {
                tokens3 = this.texto.split("! ");
            }
            if (arrayTexto == '?') {
                tokens4 = this.texto.split("? ");
            }
        }
        
        if(((tokens1.length) + (tokens2.length) + (tokens3.length) + (tokens4.length) == 0) && 
          (!"".equals(this.texto))){
            return 1;
        }
        
        return (tokens1.length) + (tokens2.length) + (tokens3.length) + (tokens4.length);
    }

    public String palavra(int quantidade){
        if(quantidade != 1){
            return " palavras";
        }
        return " palavra";
    }
    
    public String frase(int quantidade){
        if(quantidade != 1){
            return " frases";
        }
        return " frase";
    }
    
    public static Map<String, Integer> ContadorDeRepeticoes(String texto) {
        Map<String, Integer> resposta = new HashMap<String, Integer>();
        
        texto.replaceAll("\\.", " ")
             .replaceAll(", ", " ")
             .replaceAll("!", " ")
             .replaceAll("(.)\\1+", " ")
             .replaceAll("(,)\\1+", " ")
             .trim();
        StringTokenizer token = new StringTokenizer(texto);
        
        if(texto == null) {
            return resposta;
        }
        
        while(token.hasMoreTokens()) {
            
            String palavra = token.nextToken();
            if (resposta.containsKey(palavra)) {
                int valorAtual = resposta.get(palavra);
                resposta.put(palavra, valorAtual + 1);
            } else {
                resposta.put(palavra, Integer.valueOf(1));
            }
        }
        return resposta;
    }
    
    
    public String getTexto() {
        return texto;
    }

    
    public void setTexto(String texto) {
        this.texto = texto;
    }

    
}
